﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ERPWinFormWork.Produce
{
    //public static class AppConfig
    //{
    ////public const string ApiBaseUrl = "http://47.96.9.93:8000/produceapi/api/";


    //private static string _apiBaseUrl;
    //private static readonly Lazy<Task> _initializationTask;

    //public static string ApiBaseUrl
    //{
    //    get
    //    {
    //        // 等待初始化完成，返回已经加载的配置值
    //        if (_initializationTask.Value.IsCompleted)
    //        {
    //            return _apiBaseUrl;
    //        }

    //        // 如果初始化还没有完成，返回默认值（可选）
    //        return "http://localhost:5280/api/";
    //    }
    //}

    //static AppConfig()
    //{
    //    // 使用 Lazy 初始化异步配置加载
    //    _initializationTask = new Lazy<Task>(InitializeConfigAsync);
    //}

    //private static async Task InitializeConfigAsync()
    //{
    //    string key = "Produceoffine";  // Apollo 配置中的 Key
    //    string configValue = await ApolloConfigManager.GetConfigAsync(key);

    //    // 设置 API 基础 URL（如果未能获取到配置，使用默认值）
    //    _apiBaseUrl = configValue ?? "http://localhost:5280/api/";
    //}

    //}

    public static class AppConfig
    {
        private static string _apiBaseUrl;
        private static readonly string _defaultApiUrl = "http://47.96.9.93:8000/produceapi/api/";
        private static bool _isInitialized;

        public static string ApiBaseUrl
        {
            get
            {
                // 确保初始化完成（未完成时返回默认值避免卡顿）
                return _isInitialized ? _apiBaseUrl : _defaultApiUrl;
            }
        }

        // 程序启动时调用此方法预加载配置
        public static async Task InitializeAsyncProduce()
        {
            if (_isInitialized) return;

            try
            {
                string key = "ProduceOnline";
                string configValue = await ApolloConfigManager.GetConfigAsync(key);
                _apiBaseUrl = configValue ?? _defaultApiUrl;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"配置加载失败: {ex.Message}");
                _apiBaseUrl = _defaultApiUrl;
            }
            finally
            {
                _isInitialized = true; // 无论成功失败都标记为已初始化
            }
        }
    }
}
